因为分布式cuckoo沙箱在网上没看到什么教程,所以期间还走了挺多弯路,根本原因就是没有仔细地看一遍官方的手册,遗漏了一些细节。所以强烈建议搭建沙箱时完整看一遍官方的手册,网上的教程虽然看着方便但还是没这个全面。
最终实现的理想分布式cuckoo是:server控制n个worker,每个worker的virtualbox上配置了m个虚拟机。实现n*m个虚拟机同时运行恶意软件样本。
单cuckoo上增加vm
主要参考:https://blog.csdn.net/weixin_42651205/article/details/83900436
这里做的工作是为了让但cuckoo节点关联的virtualbox中,增加多个虚拟机。配置完成后,向改cuckoo节点下发多个任务时,cuckoo会自动调用多个虚拟机同时跑软件分析任务。
需要注意的就是深度copy虚拟机,然后修改新虚拟机的ip,不能和原来的一样,否则会冲突。
然后在cuckoo的配置文件里修改virtualbox.conf,machines=cuckoo1,cuckoo2,cuckoo3
分布式cuckoo的部署
server端部署
https://cuckoo.sh/docs/usage/dist.html#setup-distributed-cuckoo
就用原有的配置文件,不用修改。server端只需要下面三个步骤,不要求要运行cuckoo -d
不sudo会出错
sudo cuckoo distributed server -H 0.0.0.0
root@ubuntu16:~/.cuckoo# supervisord -c supervisord.conf
root@ubuntu16:~/.cuckoo# supervisorctl start distributed
distributed: started
root@ubuntu16:~/.cuckoo#
开启server后,可以通过web访问查看各个挂载到server的worker节点的情况:
挂载成功的worker节点在Active processes这里会变成绿色的,如果是红色的,则可能是supervisorctl启动有问题。
worker节点部署
- 需要在cuckoo config配置里把api调用的验证token去掉:
api_token =
# api_token = bZ0mLmUX2QElehFjI33OOQ
- 开启api
nohup cuckoo api –host 192.168.2.136 &
- 注册当前节点到server
curl http://192.168.105.127:9003/api/node -F name=tmy -F url=http://192.168.2.136:8090/
|
|
如果修改了cuckoo的配置,需要supervisorctl stop cuckoo:停止之后重启。
之前有尝试过修改mongo数据库地址,只是重启了cuckoo -d没有stop,这种情况下提交样本后报告存储的路径还是旧的mongo地址。
ditributed下发任务到指定node
python代码
常用api整理
指令 | 功能 |
---|---|
curl http://192.168.105.127:9003/api/node | 获得当前挂载到server的所有worker节点信息 |
curl http://192.168.2.136:9003/api/node -F name=localhost -F url=http://192.168.2.136:8090/ | 注册一个node到server |
curl http://192.168.105.127:9003/api/node/tmy | 通过名称获得当前挂载到server的某个worker节点信息 |
curl -XDELETE http://192.168.105.127:9003/api/node/tmy | disable某个节点(不会删除,只是修改状态) |
curl http://192.168.105.127:9003/api/task -F file=@/home/tangmingyu/文档/安全沙箱安装/恶意软件样本/test2.exe | 提交本地文件到分布式沙箱server |
curl http://192.168.105.127:9003/api/task/2 | 获得序号为x的task的基本信息 |